package tools

import (
	"blog/utils"
	"encoding/json"
	"fmt"
	"github.com/olivere/elastic/v7"
	AnxiongLog "log"
)

// AddJson 插入单条数据 参数: data json字符串内容 tableName 插入index名称,表库合一就是库
func AddJson(data string, tableName string) error {
	res, err := utils.ElasticClient.Index().Index(tableName).BodyString(data).Do(utils.DoCtxBackground)
	if err != nil {
		AnxiongLog.Println("插入es数据错误", err)
		return err
	}
	AnxiongLog.Println("插入es数据错误", err)
	fmt.Printf("插入es成功:ID= %s --- index= %s \n", res.Id, res.Index)
	return nil
}

// SearchDataById 搜索数据 参数 id 索引id, 返回数据:json格式的数据 json.Unmarshal(res.Source, &结构体) 可以解析
func SearchDataById(id string, tableName string) json.RawMessage {
	res, err := utils.ElasticClient.Get().Index(tableName).Id(id).Do(utils.DoCtxBackground)
	if err != nil {
		AnxiongLog.Println("搜索数据错误", err)
		return nil
	}
	if res.Found {
		return res.Source
	}
	return nil
}

// ShowList 显示列表数据
func ShowList(tableName string) ([]*elastic.SearchHit, int64) {
	res, err := utils.ElasticClient.Search().Index(tableName).Do(utils.DoCtxBackground)
	if err != nil {
		fmt.Println("查询es数据错误", err)
	}
	return res.Hits.Hits, res.Hits.TotalHits.Value
}
